package net.ericaro.neojavagen.interfaces;

/**
 * <b>NormalAnnotationDeclaration</b> ::= <{@link net .ericaro .neojavagen .packages .JavadocComment JavadocComment}>? <
 * {@link net .ericaro .neojavagen .interfaces .Annotations Annotations}>? <{@link java .util .EnumSet <net .ericaro .neojavagen .interfaces
 * .AbstractMethodModifier > EnumSet}> <{@link net .ericaro .neojavagen .types .Type Type}> <{@link net .ericaro .neojavagen .types .Identifier Identifier}> "("
 * ")" <{@link net .ericaro .neojavagen .interfaces .DefaultValue DefaultValue}>? ";"
 * 
 * @author eric@ericaro.net
 */
public class NormalAnnotationDeclaration extends net.ericaro.neojavagen.JavaPartComposition implements net.ericaro.neojavagen.interfaces.AnnotationTypeElementDeclaration {
	private net.ericaro.neojavagen.interfaces.Annotations annotations;

	private net.ericaro.neojavagen.interfaces.DefaultValue defaultValue;

	private java.util.EnumSet<net.ericaro.neojavagen.interfaces.AbstractMethodModifier> enumSet;

	private net.ericaro.neojavagen.types.Identifier identifier;

	private net.ericaro.neojavagen.packages.JavadocComment javadocComment;

	private net.ericaro.neojavagen.types.Type type;

	public NormalAnnotationDeclaration(java.util.EnumSet<net.ericaro.neojavagen.interfaces.AbstractMethodModifier> enumSet, net.ericaro.neojavagen.types.Type type, net.ericaro.neojavagen.types.Identifier identifier) {
		this.javadocComment = null;
		this.annotations = null;
		this.enumSet = enumSet;
		this.type = type;
		this.identifier = identifier;
		this.defaultValue = null;
	}

	public NormalAnnotationDeclaration(net.ericaro.neojavagen.packages.JavadocComment javadocComment, net.ericaro.neojavagen.interfaces.Annotations annotations, java.util.EnumSet<net.ericaro.neojavagen.interfaces.AbstractMethodModifier> enumSet, net.ericaro.neojavagen.types.Type type, net.ericaro.neojavagen.types.Identifier identifier, net.ericaro.neojavagen.interfaces.DefaultValue defaultValue) {
		super();
		this.javadocComment = javadocComment;
		this.annotations = annotations;
		this.enumSet = enumSet;
		this.type = type;
		this.identifier = identifier;
		this.defaultValue = defaultValue;
	}

	public net.ericaro.neojavagen.interfaces.Annotations getAnnotations() {
		return annotations;
	}

	public net.ericaro.neojavagen.interfaces.DefaultValue getDefaultValue() {
		return defaultValue;
	}

	public java.util.EnumSet<net.ericaro.neojavagen.interfaces.AbstractMethodModifier> getEnumSet() {
		return enumSet;
	}

	public net.ericaro.neojavagen.types.Identifier getIdentifier() {
		return identifier;
	}

	public net.ericaro.neojavagen.packages.JavadocComment getJavadocComment() {
		return javadocComment;
	}

	public net.ericaro.neojavagen.types.Type getType() {
		return type;
	}

	public void setAnnotations(net.ericaro.neojavagen.interfaces.Annotations annotations) {
		this.annotations = annotations;
	}

	public void setDefaultValue(net.ericaro.neojavagen.interfaces.DefaultValue defaultValue) {
		this.defaultValue = defaultValue;
	}

	public void setEnumSet(java.util.EnumSet<net.ericaro.neojavagen.interfaces.AbstractMethodModifier> enumSet) {
		this.enumSet = enumSet;
	}

	public void setIdentifier(net.ericaro.neojavagen.types.Identifier identifier) {
		this.identifier = identifier;
	}

	public void setJavadocComment(net.ericaro.neojavagen.packages.JavadocComment javadocComment) {
		this.javadocComment = javadocComment;
	}

	public void setType(net.ericaro.neojavagen.types.Type type) {
		this.type = type;
	}

	@Override
	public java.lang.String toString() {
		return print(javadocComment, annotations, enumSet, type, identifier, "(", ")", defaultValue, ";");
	}
}
